<?php

namespace Admin\Controller;

use Admin\Model\Admin;
use Think\Controller;

/**
 * Admin后台，所有需要登录的控制器，都要继承自此类
 * @author  Zou Yiliang
 * @since   1.0
 */
class BaseController extends Controller
{
    public function __construct()
    {
        parent::__construct();

        //验证登录，未登录跳转到登录页
        if (!Admin::isLogin()) {

            //记住当前的url，写到 session中，登录成功后，跳去该url
            session('returnUrl', $_SERVER['REQUEST_URI']);

            $this->redirect('Default/login');
            exit;
        }
    }

    /**
     * 上传文件的方法
     * @return $filename
     */
    //文件上传
    public function upload(){
        // 实例化上传类
        $upload = new \Think\Upload();
        // 设置附件上传大小
        $upload->maxSize   =     3145728 ;
        // 设置附件上传类型
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');
        // 设置附件上传根目录  需要手动去创建
        $upload->rootPath=  './Public/';
        // 设置附件上传目录   需要在 ./public/'下 手动去创建
        $upload->savePath  =  './upload/';
        //设置上传文件名
        $upload->saveName=date('Ymd',time()).uniqid();
        //自动使用子目录保存上传文件
        $upload->autoSub=true;
        //子目录上传方式
        $upload->subName=date('Y',time()).'/'.date('m',time()).'/'.date('d',time());

        // 上传文件
        $info =  $upload->upload();
        if(!$info) {
            // 上传错误提示错误信息
            $this->error($upload->getError());
        }else{
            //调用图片压缩，把图片名字传过去
            $this->zoom($info['pic']['savename']);
            //返回图片名字
            return $info['pic']['savename'];
        }
    }

    //图片压缩   接收图片名$info['pic']['savename']
    private function zoom($filename)
    {
        $image = new \Think\Image();

        //拼接图片路径 			 调用拼接好的文件+子目录路径
        $path='./Public/upload/'.$this->substr($filename);
        //读取图片完整路径
        $image->open($path.$filename);
        //前台图片大小：
        $image->thumb(130, 60)->save($path.'96_'.$filename);
        //广告图片：
        $image->crop(728,130)->save($path.'98_'.$filename);
    }


    //拼接文件上传子目录  接收图片名
    public function substr($filename)
    {
        return substr($filename,0,4).'/'.substr($filename,4,2).'/'.substr($filename,6,2).'/';
    }
    //删除图片
    public function setunlink($filename){
        $path='./Public/upload/';
        unlink($path.$this->substr($filename).$filename);
        unlink($path.$this->substr($filename).'96_'.$filename);
    }
}